package com.coldchain.cys.service;

import com.coldchain.common.msg.BaseResponse;
import com.coldchain.cys.entity.CarDriver;
import com.fangliai.core.base.service.IBaseService;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author tianpeng
 * @since 2018-08-28
 */
public interface ICarDriverService extends IBaseService<CarDriver> {

	/**
	 * 根据id数组来查询
	 * @author TianPeng
	 *
	 * 2018年9月6日
	 */
	List<CarDriver> getListByIds(String carDriverList);

	/**
	 * 根据id数据和承运商的id来查询
	 * @author TianPeng
	 *
	 * 2018年9月6日
	 */
	List<CarDriver> getListByIds(String carDriverList, Long cysId);



	/**
	 * 取得司机的基本信息
	 * @author TianPeng
	 *
	 * 2018年9月12日
	 */
	CarDriver getCarDriverInfo(Long id);

	/**
	 * 添加或修改司机
	 * @author TianPeng
	 *
	 * 2018年9月12日
	 */
	BaseResponse edit(CarDriver carDriver);

	/**
	 * 验证司机的账号密码
	 * @author TianPeng
	 *
	 * 2018年9月10日
	 */
	BaseResponse validateCarDriverLogin(String username,String password);
	
	/**
	 * 验证司机状态
	 * @author TianPeng
	 *
	 * 2018年9月12日
	 */
	boolean validateCarDriver(String carDriverId) throws Exception;
	/**
	 * 根据手机号来查询司机
	 * @author TianPeng
	 *
	 * 2018年9月10日
	 */
	CarDriver getByPhone(String phone) ;
	
	/**
	 * 取得当前登录的司机
	 * @author TianPeng
	 *
	 * 2018年9月12日
	 */
	CarDriver getCurrent();

	/**
	 * 审核司机
	 * @author TianPeng
	 *
	 * 2018年9月14日
	 */
	BaseResponse doExamineCarDriver(Long driverid, Integer status);

	/**
	 * 启用或者禁用司机
	 * @author TianPeng
	 *
	 * 2018年9月14日
	 */
	BaseResponse doSwitchCarDriverUse(Long driverid);

	/**
	 * 查询没有指定车辆的司机
	 * @return
	 */
	List<CarDriver> getNotCarList(String search);

	/**
	 * 更新车辆id 
	 * @param originCarDriver
	 * @return
	 */
	boolean updateCarid(CarDriver originCarDriver);

	/***
	 * 保存司机的个人信息
	 * @param name
	 * @param headImage
	 * @return
	 */
	BaseResponse doSaveCarDriverInfo(String name, String headImage);

	/**
	 * 司机自动接单开关
	 * @return
	 */
	BaseResponse doSwitchCarDriverAutoReceive();

	/**
	 * 司机语音播报开关
	 * @return
	 */
	BaseResponse doSwitchCarDriverVoiceNotice();

	/**
	 * 司机设置接单时间
	 * @param worktimeBegin
	 * @param worktimeEnd
	 * @return
	 */
	BaseResponse doSetReceiveTime(String worktimeBegin, String worktimeEnd);

	/**
	 * 司机自增成功订单数量
	 * @param driverid
	 * @return
	 */
	BaseResponse doIncrementSuccessOrder(Long driverid);

	/**
	 * 司机自增退单数量
	 * @param driverid
	 * @return
	 */
	BaseResponse doIncrementRetreatOrder(Long driverid);

	/**
	 * 发送司机短信验证码
	 * @param phone
	 * @return
	 */
	BaseResponse doSendLoginValidate(String phone);

	/**
	 * 短信验证码验证司机登录
	 * @param phone
	 * @param code
	 * @return
	 */
	BaseResponse validateCarDriverCodeLogin(String phone, String code);

	/**
	 * 发送司机忘记密码短信验证码
	 * @param phone
	 * @return
	 */
	BaseResponse doSendForgetValidate(String phone);

	/**
	 * 验证司机忘记密码短信验证码
	 * @param phone
	 * @param code
	 * @return
	 */
	BaseResponse validateCarDriverForget(String phone, String code);

	/**
	 * 操作司机忘记密码修改新密码
	 * @param token
	 * @param newPass
	 * @return
	 */
	BaseResponse doDriverChangeForgetPass(String token, String newPass);

	/**
	 * count综合查询
	 * @param carDriver
	 * @return
	 */
	int countByCarDriver(CarDriver carDriver) ;
	
	/**
	 * 查询司机们的总业绩
	 * @return
	 */
	Integer sumAchievement() ;
	
	/**
	 * 查询司机们的总退单数
	 * @return
	 */
	Integer sumRefund() ;
}
